package MODULES.MOD_XML.MODELS;

import java.util.HashMap;
import java.util.List;

import vn.edu.imic.XmlProcess.XMLManagements;

public class XMLModels {

    /***
     * Nghiệp vụ đọc dữ liệu trong files XML có sẵn
     * @param lisField - Chứa danh sách các trường dữ liệu. Chỉ số = 0 dành cho Node Atribute Key.
     * @param elementNode - Phần tử Node con của Root Node. Ví dụ: <iMIC><Student></Student></iMIC> --> Root Node = "iMIC" & Element Node = "Student"
     * @param path - Chứa đường dẫn resource. Ví dụ: "D:imic/xml/Student.xml"
     * @return List<List<HashMap<String, String>>>
     * @throws Exception 
     */
    public List<List<HashMap<String, String>>> ReadElement(List<Object> lisField, String elementNode, String path)
            throws Exception {
        return new XMLManagements().XMLOfItems(lisField, elementNode, path);
    }

    /**
     * Nghiệp vụ xử lý ghi dữ liệu xuống XML files
     * @param lisField - Chứa danh sách các trường dữ liệu. Chỉ số = 0 dành cho Node Atribute Key.
     * @param lisValues - Chứa danh sách dữ liệu tương ứng. Chỉ số = 0 chứa dữ liệu cho Node Atribute Key.
     * @param rootNode - Chứa tên node gốc (gắn trực tiếp vào Documents).
     * @param elementNode - Chứa tên node con (gắn trực tiếp vào node gốc).
     * @param path - Chứa đường dẫn resource. Ví dụ: "D:imic/xml/Student.xml"    
     * @param writeType - Kiểu ghi dữ liệu xuống files. writeType = true: Ghi mới và 
     * writeType = false: Ghi nối tiếp.     * 
     * @return true or false
     * @throws Exception
     */
    public boolean WriteElement(List<Object> lisField, List<List<Object>> lisValues, String rootNode,
            String elementNode, String path, boolean writeType) throws Exception {
        return XMLManagements.WriteDataXML(lisField, lisValues, rootNode, elementNode, path, writeType);
    }

    /**
     * Nghiệp vụ cập nhật dữ liệu trong XML Files
     * @param lisField - Chứa danh sách các trường dữ liệu. Chỉ số = 0 dành cho Node Atribute Key.
     * @param lisValues - Chứa danh sách dữ liệu tương ứng. Chỉ số = 0 chứa dữ liệu cho Node Atribute Key.
     * @param resource - Chứa đường dẫn resource. Ví dụ: "D:imic/xml/"
     * @param fileName - Chưa tên files XML định nghĩa. Ví dụ: "Students.xml"
     * @param attributeKey - Thuộc tính key định danh cho mỗi ElementNode. Ví dụ: <Student id="1"> --> attributeKey = "id"
     * @param elementNode - Phần tử Node con của Root Node. Ví dụ: <iMIC><Student></Student></iMIC> --> Root Node = "iMIC" & Element Node = "Student"
     * @param lisStudent
     * @return
     * @throws Exception
     */
    public boolean UpdateElement(List<Object> lisField, List<Object> lisValues, String path, String attributeKey,
            String elementNode) throws Exception {
        return new XMLManagements().UpdateDataXML(lisField, lisValues, path, attributeKey, elementNode);
    }
}
